{ "cells": [ { "cell_type": "markdown", "id": "d4676f81", "metadata": {}, "source": [ "# Background\n", "\n", "- **Author**: `<郭伊軒>`\n", "- **Created At**: `<2025-10-30>`\n", "- **Research Motivation and Context (why are we interested in the findings?):** \n", "本研究透過時間序列視覺化的方式,探討遊戲在不同事件(如季節促銷、DLC 發行、續作推出)下或其玩家數、追蹤者數與好評率變化對折扣時間點的影響。藉由同時觀察季節促銷與非季節折扣期間的背景變化,研究可進一步辨識不同類型促銷活動對商家折扣行為的差異性。\n", "- **Main Findings and Takeaways:** \n", " - 在非季節性折扣時點前後,其玩家數、追蹤者數與好評率變化有折扣前下降折扣後上升的趨勢。\n", "\n", " - 是否發行DLC相較於是否發行續作有較高的打折機率。\n", "\n", "- **Future Direciton:** \n", " - 比較競爭對手活動 / 市場整體狀況:同類型遊戲中打折比例、同時期平均價格下降幅度。\n", "\n", " - 比較不同遊戲類型或發行商之間的差異:分析不同遊戲類型或發行商在折扣策略上的差異。\n", "\n", " - 結合機器學習模型進行折扣預測:例如利用 Random Forest 或 XGBoost 模型預測折扣時點,以驗證變數重要性並提升實務應用價值。\n" ] }, { "cell_type": "code", "execution_count": null, "id": "fdda822f", "metadata": {}, "outputs": [], "source": [ "# Load packages here\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from datetime import timedelta\n", "from sklearn.preprocessing import StandardScaler\n" ] }, { "cell_type": "code", "execution_count": 59, "id": "99e691c8", "metadata": {}, "outputs": [], "source": [ "input_data_file = \"/Users/10610/Desktop/114-1 資料/steam-project/discount-timing-DE.csv\"\n", "df = pd.read_csv(input_data_file)\n", "df['Date'] = pd.to_datetime(df['Date'])\n", "game_id = df['GameID'].unique() # 取得所有獨特的 GameID\n", "game_dfs = [] # 用來裝每個遊戲的 DataFrame\n", "\n", "for gid in game_id:\n", " sub_df = df[df['GameID'] == gid] # 篩選出該 GameID 的資料\n", " game_dfs.append(sub_df)" ] }, { "cell_type": "markdown", "id": "53b81552", "metadata": {}, "source": [ "### Sample" ] }, { "cell_type": "code", "execution_count": 34, "id": "978971d2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | Date | \n", "GameID | \n", "Type | \n", "MultiPlayer | \n", "Publisher | \n", "ConstantDiscount | \n", "DiscountOrNot | \n", "DiscountDuration | \n", "DiscountFreq3M | \n", "Age | \n", "... | \n", "FollowersGrowthRate1M | \n", "PositiveRateGrowthRate1W | \n", "PositiveRateGrowthRate2W | \n", "PositiveRateGrowthRate1M | \n", "DLC_sum_1W | \n", "DLC_sum_2W | \n", "DLC_sum_1M | \n", "Sequel_sum_1W | \n", "Sequel_sum_2W | \n", "Sequel_sum_1M | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "2023-05-01 | \n", "10 | \n", "Action | \n", "1 | \n", "Valve | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "22.509589 | \n", "... | \n", "0.003889 | \n", "0.000012 | \n", "-0.000014 | \n", "1.098178e-05 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 1 | \n", "2023-05-02 | \n", "10 | \n", "Action | \n", "1 | \n", "Valve | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "22.512329 | \n", "... | \n", "0.003913 | \n", "-0.000010 | \n", "-0.000036 | \n", "-4.698912e-07 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 2 | \n", "2023-05-03 | \n", "10 | \n", "Action | \n", "1 | \n", "Valve | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "22.515068 | \n", "... | \n", "0.003979 | \n", "-0.000011 | \n", "-0.000041 | \n", "-8.082766e-07 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 3 | \n", "2023-05-04 | \n", "10 | \n", "Action | \n", "1 | \n", "Valve | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "22.517808 | \n", "... | \n", "0.004101 | \n", "-0.000012 | \n", "-0.000050 | \n", "-2.450820e-05 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 4 | \n", "2023-05-05 | \n", "10 | \n", "Action | \n", "1 | \n", "Valve | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "22.520548 | \n", "... | \n", "0.003912 | \n", "-0.000023 | \n", "-0.000053 | \n", "-3.754777e-05 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
5 rows × 29 columns
\n", "| \n", " | count | \n", "mean | \n", "std | \n", "min | \n", "25% | \n", "50% | \n", "75% | \n", "max | \n", "
|---|---|---|---|---|---|---|---|---|
| GameID | \n", "23938.0 | \n", "461376.742000 | \n", "298559.181056 | \n", "10.000000 | \n", "244850.000000 | \n", "431730.000000 | \n", "644930.000000 | \n", "1.145360e+06 | \n", "
| MultiPlayer | \n", "23938.0 | \n", "0.464241 | \n", "0.498730 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000 | \n", "1.000000e+00 | \n", "
| ConstantDiscount | \n", "23938.0 | \n", "0.214387 | \n", "0.410405 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "
| DiscountOrNot | \n", "23938.0 | \n", "0.019885 | \n", "0.139607 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "
| DiscountDuration | \n", "23938.0 | \n", "0.221196 | \n", "1.715483 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "3.200000e+01 | \n", "
| DiscountFreq3M | \n", "23938.0 | \n", "1.797644 | \n", "1.043279 | \n", "0.000000 | \n", "1.000000 | \n", "2.000000 | \n", "3.000000 | \n", "6.000000e+00 | \n", "
| Age | \n", "23938.0 | \n", "7.634427 | \n", "4.458471 | \n", "2.389041 | \n", "4.951370 | \n", "6.323288 | \n", "8.479452 | \n", "2.484658e+01 | \n", "
| AccumulatedPositiveRate | \n", "23938.0 | \n", "0.928061 | \n", "0.064186 | \n", "0.738751 | \n", "0.905517 | \n", "0.953165 | \n", "0.972651 | \n", "9.929734e-01 | \n", "
| SalePeriod | \n", "23938.0 | \n", "0.146420 | \n", "0.353534 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "
| DiscountDuringSale | \n", "23938.0 | \n", "0.008647 | \n", "0.092590 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "
| DiscountOutOfSale | \n", "23938.0 | \n", "0.011237 | \n", "0.105411 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "
| PlayerGrowthRate1W | \n", "23938.0 | \n", "0.020047 | \n", "0.288771 | \n", "-0.592919 | \n", "-0.063356 | \n", "-0.014085 | \n", "0.035173 | \n", "1.131120e+01 | \n", "
| PlayerGrowthRate2W | \n", "23938.0 | \n", "0.032978 | \n", "0.370759 | \n", "-0.726683 | \n", "-0.088489 | \n", "-0.013852 | \n", "0.060643 | \n", "1.088149e+01 | \n", "
| PlayerGrowthRate1M | \n", "23938.0 | \n", "0.039727 | \n", "0.395094 | \n", "-0.768049 | \n", "-0.108811 | \n", "-0.009196 | \n", "0.090659 | \n", "7.285318e+00 | \n", "
| FollowersGrowthRate1W | \n", "23938.0 | \n", "0.001576 | \n", "0.001482 | \n", "-0.000137 | \n", "0.000640 | \n", "0.001111 | \n", "0.002078 | \n", "2.296777e-02 | \n", "
| FollowersGrowthRate2W | \n", "23938.0 | \n", "0.003159 | \n", "0.002758 | \n", "-0.000176 | \n", "0.001343 | \n", "0.002289 | \n", "0.004157 | \n", "3.623771e-02 | \n", "
| FollowersGrowthRate1M | \n", "23938.0 | \n", "0.006816 | \n", "0.005480 | \n", "0.000085 | \n", "0.003142 | \n", "0.005071 | \n", "0.009104 | \n", "5.282514e-02 | \n", "
| PositiveRateGrowthRate1W | \n", "23938.0 | \n", "0.000017 | \n", "0.000332 | \n", "-0.015190 | \n", "-0.000025 | \n", "0.000005 | \n", "0.000044 | \n", "6.059725e-03 | \n", "
| PositiveRateGrowthRate2W | \n", "23938.0 | \n", "0.000033 | \n", "0.000569 | \n", "-0.016712 | \n", "-0.000041 | \n", "0.000009 | \n", "0.000077 | \n", "9.389808e-03 | \n", "
| PositiveRateGrowthRate1M | \n", "23938.0 | \n", "0.000070 | \n", "0.001033 | \n", "-0.017811 | \n", "-0.000078 | \n", "0.000015 | \n", "0.000151 | \n", "1.392160e-02 | \n", "
| DLC_sum_1W | \n", "23938.0 | \n", "0.004679 | \n", "0.071822 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "2.000000e+00 | \n", "
| DLC_sum_2W | \n", "23938.0 | \n", "0.009358 | \n", "0.101767 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "2.000000e+00 | \n", "
| DLC_sum_1M | \n", "23938.0 | \n", "0.020553 | \n", "0.150182 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "2.000000e+00 | \n", "
| Sequel_sum_1W | \n", "23938.0 | \n", "0.001170 | \n", "0.034181 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "
| Sequel_sum_2W | \n", "23938.0 | \n", "0.002339 | \n", "0.048312 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "
| Sequel_sum_1M | \n", "23938.0 | \n", "0.005013 | \n", "0.070626 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "1.000000e+00 | \n", "